home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / recent / create.lha / BatchProcessNotify.isrx < prev    next >
Text File  |  1997-12-17  |  10KB  |  434 lines

  1. /* ImageStudio ARexx script **************************************/
  2.  
  3. /* Allow commands to return results */
  4.  
  5. options results
  6.  
  7. /* On error, goto ERROR:. Comment out this line if you wish to */
  8. /* perform your own error checking. */
  9.  
  10. signal on error
  11.  
  12. /* BEGIN PROGRAM *************************************************/
  13.  
  14. /* Warn the user if they are about to overwrite their current project */
  15.  
  16. IMAGEINFO_GET STEM imageinfo.
  17.  
  18. if imageinfo.changed == 1 then
  19.     REQUEST_MESSAGE TEXT '"Project has changed, continue?"',
  20.         BUTTONTEXT '"OK|Cancel"' AUTOCANCEL
  21.  
  22. /* Choose source file */
  23.  
  24. REQUEST_MESSAGE TEXT '"Choose final filename in sequence\n'||,
  25.     'on which to start the processing..."',
  26.     BUTTONTEXT '"OK|Cancel"' AUTOCANCEL
  27.  
  28. REQUEST_FILE VAR finalfile
  29.  
  30. /* Get the basefilename */
  31.  
  32. FILE_RENAME FILE '"'finalfile'"' FROM "." TO "." VAR basefile
  33. FILE_SPLIT FILE '"'basefile'"' STEM splitinfo.
  34.  
  35. basefilepart = splitinfo.filepart
  36. basepathpart = splitinfo.pathpart
  37.  
  38. /* Use separate destination directory ? */
  39.  
  40. REQUEST_MESSAGE TEXT '"Use different destination directory?"',
  41.     BUTTONTEXT '"Yes|No|Cancel"' AUTOCANCEL
  42.  
  43. if result == 1 then
  44.     REQUEST_DIR TITLE '"Choose destination directory..."' VAR destdir
  45. else
  46.     destdir = ':NONE:'
  47.  
  48. REQUEST_LIST TITLE '"Choose output format..."' STRINGS,
  49.     '"IFF-ILBM"',
  50.     '"IFF-DEEP"',
  51.     '"BMP"',
  52.     '"EPS"',
  53.     '"GIF"',
  54.     '"JPEG"',
  55.     '"PCX"',
  56.     '"PNG"',
  57.     '"PNM"',
  58.     '"QRT"',
  59.     '"SGI"',
  60.     '"TIFF"',
  61.     '"VMEM"',
  62.     '"Targa"' STEM saveformat.
  63.  
  64. /* Set up a blank ARGS string, which we can add to */
  65.  
  66. saveargs = 'ARGS "'
  67.  
  68. /* Get any IFF-ILBM args ? */
  69.  
  70. if saveformat.string == 'IFF-ILBM' then do
  71.     /* Get a subformat */
  72.  
  73.     REQUEST_MESSAGE TEXT '"Choose ILBM format..."' BUTTONTEXT,
  74.         '"As buffer|HAM6|HAM8|EHB|Cancel"' AUTOCANCEL
  75.  
  76.     /* Store subformat */
  77.  
  78.     if result == 2 then
  79.         saveargs = saveargs||'SUBFORMAT HAM6'
  80.     else if result == 3 then
  81.         saveargs = saveargs||'SUBFORMAT HAM8'
  82.     else if result == 4 then
  83.         saveargs = saveargs||'SUBFORMAT EHB'
  84.  
  85.     /* Get the dither if not saving as buffer */
  86.  
  87.     if result ~= 1 then do
  88.         REQUEST_MESSAGE TEXT '"Choose ILBM dither..."' BUTTONTEXT,
  89.             '"None|Floyd-Steinberg|Cancel"' AUTOCANCEL
  90.  
  91.         /* Store the dither */
  92.  
  93.         if result == 2 then
  94.             saveargs = saveargs||' DITHER FS'
  95.  
  96.     end
  97.  
  98.     /* Ask whether should set screenmode of images */
  99.  
  100.     REQUEST_MESSAGE TEXT '"Set screenmode of images?"',
  101.         BUTTONTEXT '"Yes|No|Cancel"' AUTOCANCEL
  102.  
  103.     if result == 1 then do
  104.         setscreenmode = 1
  105.  
  106.         REQUEST_SCREENMODE STEM screenmode.
  107.  
  108.         imagescreenmode = screenmode.modeid
  109.  
  110.         end
  111.     else
  112.         setscreenmode = 0
  113. end
  114.  
  115. else if saveformat.string == 'GIF' then do
  116.  
  117.     REQUEST_MESSAGE TEXT '"Interlace?"' BUTTONTEXT,
  118.         '"YES|NO|Cancel"' AUTOCANCEL
  119.  
  120.     if result == 1 then
  121.         saveargs = saveargs||' INTERLACE'
  122.  
  123.     REQUEST_MESSAGE TEXT '"Choose Subformat"' BUTTONTEXT,
  124.         '"GIF87a|GIF89a|Cancel"' AUTOCANCEL
  125.     
  126.     if result == 1 then
  127.         saveargs = saveargs||' SUBFORMAT=GIF87a'
  128.     else do
  129.         saveargs = saveargs||' SUBFORMAT=GIF89a'
  130.  
  131.         REQUEST_MESSAGE TEXT '"Transparency?"' BUTTONTEXT,
  132.             '"Yes|No|Cancel"' AUTOCANCEL
  133.  
  134.         if result == 1 then do
  135.             
  136.             REQUEST_STRING TEXT1 '"Enter the tranparency colour"',
  137.                 TEXT2 '"(Valid values palette range):"',
  138.                 STRING 0 VAR colourinfo
  139.  
  140.             saveargs = saveargs||' TRANSPARENCY TRANSPCOLOUR '||colourinfo
  141.         end
  142.  
  143.     end
  144.     
  145. end
  146.  
  147. else if saveformat.string == 'EPS' then do
  148.     /* Get the DPI of the image */
  149.  
  150.     REQUEST_STRING TEXT1 '"Enter the DPI resolution of"',
  151.         TEXT2 '"the EPS files to be saved:"',
  152.         STRING 300 VAR dpiinfo
  153.  
  154.     saveargs = saveargs||dpiinfo
  155.  
  156.     /* Ask whether to save as colour or greyscale */
  157.  
  158.     REQUEST_MESSAGE TEXT '"Greyscale or colour EPS?"' BUTTONTEXT,
  159.         '"Greyscale|Colour|Cancel"' AUTOCANCEL
  160.  
  161.     if result == 2 then
  162.         saveargs = saveargs||' COLOUR'
  163. end
  164.  
  165. else if saveformat.string == 'JPEG' then do
  166.     /* Get the DPI of the image */
  167.  
  168.     REQUEST_STRING TEXT1 '"Enter the JPEG quality setting"',
  169.         TEXT2 '"for the files to be saved."',
  170.         TEXT3 '"(Valid values 25 to 100):"',
  171.         STRING 75 VAR qualityinfo
  172.  
  173.     saveargs = saveargs||qualityinfo
  174.  
  175.     /* Ask whether to save as colour or greyscale */
  176.  
  177.     REQUEST_MESSAGE TEXT '"Greyscale or colour JPEG?"' BUTTONTEXT,
  178.         '"Greyscale|Colour|Cancel"' AUTOCANCEL
  179.  
  180.     if result == 1 then
  181.         saveargs = saveargs||' GREYSCALE'
  182.  
  183. end
  184.  
  185. else if saveformat.string == 'PNG' then do
  186.  
  187.     REQUEST_MESSAGE TEXT '"Interlace?"' BUTTONTEXT,
  188.         '"YES|NO|Cancel"' AUTOCANCEL
  189.  
  190.     if result == 1 then
  191.         saveargs = saveargs||' INTERLACE=ADAM7'
  192.  
  193.  
  194.     REQUEST_MESSAGE TEXT '"Transparency?"' BUTTONTEXT,
  195.         '"Yes|No|Cancel"' AUTOCANCEL
  196.  
  197.     if result == 1 then do
  198.         
  199.         REQUEST_STRING TEXT1 '"Enter the tranparency colour"',
  200.             TEXT2 '"(Valid values palette range):"',
  201.             STRING 0 VAR colourinfo
  202.  
  203.         saveargs = saveargs||' TRANSPARENCY TRANSPCOLOUR '||colourinfo
  204.  
  205.     end
  206. end    
  207.  
  208. else if saveformat.string == 'PNM' then do
  209.     REQUEST_LIST TITLE '"Choose subformat"' STRINGS,
  210.         '"PBM"',
  211.         '"PGM"',
  212.         '"PPM"' STEM PNMsubf.
  213.         
  214.     saveargs = saveargs||' '||PNMsubf.string
  215.     
  216.     REQUEST_MESSAGE TEXT '"ACSII file?"' BUTTONTEXT,
  217.         '"Yes|No|Cancel"' AUTOCANCEL
  218.         
  219.     if result == 1 then 
  220.         saveargs = saveargs||' ASCII'
  221. end
  222.  
  223. else if saveformat.string == 'SGI' then do
  224.     REQUEST_MESSAGE TEXT '"Greyscale?"' BUTTONTEXT,
  225.         '"Yes|No|Cancel"' AUTOCANCEL
  226.         
  227.     if result == 1 then 
  228.         saveargs = saveargs||' GREYSCALE'
  229.  
  230.     REQUEST_MESSAGE TEXT '"Compressed?"' BUTTONTEXT,
  231.         '"Yes|No|Cancel"' AUTOCANCEL
  232.         
  233.     if result == 1 then 
  234.         saveargs = saveargs||' COMPRESSED'
  235. end
  236.  
  237. else if saveformat.string == 'TIFF' then do
  238.     REQUEST_STRING TEXT1 '"Enter desired DPI"',
  239.         STRING 300 VAR dpiinfo
  240.         
  241.     saveargs = saveargs||' COMPRESSION=NONE DPI='||dpiinfo
  242. end
  243.  
  244. /* We may or may not have created an ARGS string. If we have, lets */
  245. /* finish it off, else lets delete it */
  246.  
  247. if saveargs == 'ARGS "' then
  248.     saveargs = ''
  249. else
  250.     saveargs = saveargs||'"'
  251.  
  252. /* Rename filenames ? */
  253.  
  254. REQUEST_MESSAGE TEXT '"Rename filenames ?"' BUTTONTEXT,
  255.     '"Yes|No|Cancel"' AUTOCANCEL
  256.  
  257. if result == 1 then do
  258.     /* Set the rename files */
  259.  
  260.     renamefiles = 1
  261.  
  262.     /* Get the rename pattern */
  263.  
  264.     REQUEST_STRING TEXT1 '"Choose the filename extension. For"',
  265.         TEXT2 '"example: . .ILBM would rename all"',
  266.         TEXT3 '"files to .ILBM, see docs for more info"',
  267.         STRING '". .'||saveformat.string||'"',
  268.         VAR renamestring
  269.     end
  270. else
  271.     renamefiles = 0
  272.  
  273. /* If we're renaming, we should ask if they want the source file */
  274. /* deleted. If we're not renaming, we should warn the user that */
  275. /* the source file will be overwritten. */
  276.  
  277. if renamefiles == 1 then do
  278.     REQUEST_MESSAGE TEXT '"Delete source files ?"',
  279.         BUTTONTEXT '"Yes|No|Cancel"' AUTOCANCEL
  280.  
  281.     if result == 1 then
  282.         deletesource = 1
  283.     else
  284.         deletesource = 0
  285.     end
  286. else if renamefiles == 0 & destdir == ':NONE:' then
  287.     REQUEST_MESSAGE TEXT '"WARNING : Source files will\nbe overwritten."',
  288.         BUTTONTEXT '"OK|Cancel"' AUTOCANCEL
  289.  
  290. /* Ask user for process(s) to apply to image before saving out */
  291.  
  292. REQUEST_STRING TITLE '"Enter processes to apply..."',
  293.     TEXT1 '"Enter the processes to apply before"',
  294.     TEXT2 '"saving out the image (separate "',
  295.     TEXT3 '"commands with semi-colon ;)"' VAR process
  296.  
  297. /* Wait for finalfile to change */
  298.  
  299. NOTIFY_FILE FILE '"'finalfile'"'
  300.  
  301. /* Get all files that match the basefile */
  302.  
  303. FILES_MATCH PATHPART '"'basepathpart'"' PATTERN '"'basefilepart||'#?"',
  304.     STEM srcfiles.
  305.  
  306. /* Loop around and convert all the files */
  307.  
  308. do l = 0 to (srcfiles.fileparts.count - 1)
  309.     /* Construct the source file */
  310.  
  311.     FILE_JOIN PATHPART '"'basepathpart'"' FILEPART,
  312.         '"'srcfiles.fileparts.l'"' VAR 'srcfile'
  313.  
  314.     /* Open the file */
  315.  
  316.     OPEN FILE '"'srcfile'"' FORCE
  317.  
  318.     /* If you wish to customize this macro to perform any operations */
  319.     /* on the image before saving it out (e.g. resizing, colour */
  320.     /* reduction etc...), add the commands here */
  321.  
  322.     interpret process
  323.  
  324.     /* Set the screenmode if neccessary */
  325.  
  326.     if setscreenmode == 1 then
  327.         IMAGEINFO_SET MODEID imagescreenmode
  328.  
  329.     /* Create the output filename */
  330.  
  331.     if destdir ~= ':NONE:' then do
  332.         /* Get the filepart of the src filepart */
  333.  
  334.         FILE_SPLIT FILE '"'srcfiles.fileparts.l'"',
  335.             STEM 'splitinfo.'
  336.  
  337.         /* Create the destfile */
  338.  
  339.         FILE_JOIN PATHPART '"'destdir'"',
  340.             FILEPART '"'splitinfo.filepart'"' VAR 'destfile'
  341.  
  342.         end
  343.     else
  344.         destfile = srcfile
  345.  
  346.     /* Rename file ? */
  347.  
  348.     if renamefiles == 1 then 
  349.         FILE_RENAME FILE '"'destfile'"' renamestring,
  350.             VAR 'destfile'
  351.  
  352.     /* Save the fileout in the new format */
  353.  
  354.     SAVE FILE '"'destfile'"' FORMAT '"'saveformat.string'"',
  355.         saveargs FORCE
  356.  
  357.     /* Delete source file (and icon) if required */
  358.  
  359.     if renamefiles == 1 & deletesource == 1 then do
  360.         /* Make sure hasn't been renamed to same name */
  361.  
  362.         if upper(srcfile) == upper(destfile) then
  363.             break
  364.  
  365.         address command 'delete <NIL: >NIL: "'srcfile.'"'
  366.  
  367.         if exists(srcfile'.info') == 1 then
  368.             address command 'delete <NIL: >NIL: "'||,
  369.                 srcfile'.info"'
  370.         end
  371.     end
  372.  
  373.  
  374. /* END PROGRAM ***************************************************/
  375.  
  376. exit
  377.  
  378. /* On ERROR */
  379.  
  380. ERROR:
  381.  
  382. /* If we get here, either an error occurred with the command's */
  383. /* execution or there was an error with the command itself. */
  384. /* In the former case, rc2 contains the error message and in */
  385. /* the latter, rc2 contains an error number. SIGL contains */
  386. /* the line number of the command which caused the jump */
  387. /* to ERROR: */
  388.  
  389. if datatype(rc2,'NUMERIC') == 1 then do
  390.     /* See if we can describe the error with a string */
  391.  
  392.     select
  393.         when rc2 == 103 then
  394.             err_string = "ERROR 103, "||,
  395.                 "out of memory at line "||SIGL
  396.         when rc2 == 114 then
  397.             err_string = "ERROR 114, "||,
  398.                 "bad command template at line "||SIGL
  399.         when rc2 == 115 then
  400.             err_string = "ERROR 115, "||,
  401.                 "bad number for /N argument at line "||SIGL
  402.         when rc2 == 116 then
  403.             err_string = "ERROR 116, "||,
  404.                 "required argument missing at line "||SIGL
  405.         when rc2 == 117 then
  406.             err_string = "ERROR 117, "||,
  407.                 "value after keywork missing at line "||SIGL
  408.         when rc2 == 118 then
  409.             err_string = "ERROR 118, "||,
  410.                 "wrong number of arguments at line "||SIGL
  411.         when rc2 == 119 then
  412.             err_string = "ERROR 119, "||,
  413.                 "unmatched quotes at line "||SIGL
  414.         when rc2 == 120 then
  415.             err_string = "ERROR 120, "||,
  416.                 "line too long at line "||SIGL
  417.         when rc2 == 236 then
  418.             err_string = "ERROR 236, "||,
  419.                 "unknown command at line "||SIGL
  420.         otherwise
  421.             err_string = "ERROR "||rc2||", at line "||SIGL
  422.         end
  423.         end
  424. else if rc2 == 'RC2' then do
  425.     err_string = "ERROR in command at line "||SIGL
  426.     end
  427. else do
  428.         err_string = rc2||", line "||SIGL
  429.         end
  430.  
  431. request_message TEXT '"'err_string'"'
  432.  
  433. exit
  434.